type Scalar Float;

type Point {
    x: Scalar,
    y: Scalar
}
default {
    x: 0.0,
    y: { get-y {} }
};

function get-y:
    & { value: Float } => Float
        default { value: 1.0 }
    & { value } => value;

entry
    let p := { |Point| {} },
    let {x,y} := p,
    { sys::println { "(?,?)" (x.{String}, y.{String}) } }
        . { crash-on-error };
